package Gestores.DtoObjects;

import Gestores.DaoInterfaces.PagoCredencialDAO;
import Gestores.DataBaseLink;

import Gestores.Entidades.EntidadPagoCredencial;
import Gestores.NucleoBaseDatos;


import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

public class PagoCredencialDTO implements PagoCredencialDAO {

    private DataBaseLink conn;
    private EntidadPagoCredencial cre;

    public PagoCredencialDTO() {

        this.conn = NucleoBaseDatos.getInstance();
    }

    @Override
    public ArrayList<Object> buscarPorCi(int ci) throws Exception {

        ResultSet resultado;
        String comando = "Call ObtenerPagoCredencialPorCi(" + String.valueOf(ci) + ");";
        resultado = conn.executeSql("Call ObtenerPagoCredencialPorCi(" + String.valueOf(ci) + ");");
        return devolverListaCargada(resultado);


    }

    private ArrayList<Object> devolverListaCargada(ResultSet resultado) throws SQLException {
        ArrayList<Object> lista = new ArrayList<Object>();
        // (int id, int ci, String descripcion, int monto, Date fecha, boolean estado)
        while (resultado.next()) {
            EntidadPagoCredencial eAfiliado = new EntidadPagoCredencial(resultado.getInt(1),
                    resultado.getInt(2), resultado.getString(3), resultado.getInt(4), resultado.getDate(5),
                    resultado.getBoolean(6));
            lista.add(eAfiliado);
        }
        this.conn.CerrarStatement();
        return lista;
    }

    @Override
    public ArrayList<Object> buscarPorCiId(int ci, int id) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void insertar(Object objeto) throws Exception{
       
            //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            cre = (EntidadPagoCredencial) objeto;
            //InsertarPagoCertificado(Ci Int,Descripcion Varchar(100),Monto Int)
            String comando = "call InsertarPagoCredencial(" + cre.InsertarCredencialToString() + ");";
            this.conn.executeSql(comando);
            
        
    }

    @Override
    public void actualizar(Object primaryKey, Object objeto) throws Exception{
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void eliminacionLogica(Object objeto)throws Exception {
        EntidadPagoCredencial cre= cre = (EntidadPagoCredencial) objeto;
        String comando = "call  AnularPagoCredencial(" + cre.InsertarEliminacionComand() + ");";
        this.conn.executeSql(comando);
    }

    @Override
    public void eliminacionFisica(Object objeto)throws Exception {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public ArrayList<Object> listarTabla()throws Exception {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
